package com.aiwiown.snackmq.common.handler;

import com.aiwiown.snackmq.common.message.Message;

import java.nio.ByteBuffer;
import java.util.List;

/**
 * 一个抽象的响应写入器接口，用于将业务逻辑与具体的网络实现（如 Netty）解耦。
 * 任何网络层实现都必须提供一个此接口的实现，以处理来自 Handler 的响应。
 */
public interface ResponseWriter {

    /**
     * 写入一个标准的、基于 Message 对象的响应。
     *
     * @param response 要发送的响应消息。
     */
    void writeResponse(Message response);

    /**
     * 【新增】写入一个基于零拷贝的响应。
     * 此方法直接接收原始的 ByteBuffer 列表，用于实现从存储到网络的高性能数据传输。
     *
     * @param messageId 对应原始请求的消息ID，用于客户端关联响应。
     * @param buffers   从存储层零拷贝读取的、包含原始消息数据的 ByteBuffer 列表。
     */
    void writeZeroCopyResponse(long messageId, List<ByteBuffer> buffers);
}